Generated files

Symbol tables
Whenever SNiFF+ loads the source code of a project for the first time, it parses the source files and extracts the symbol information into a symbol table. When the project is closed, this symbol table is stored to disk in the file projectname

.symtab . The next time this project is opened, the files are not parsed again, but the symbol information is directly loaded from the symbol table file. SNiFF+ checks whether any of the source files have been modified and reparses files when necessary. Thus the symbol information is always kept up-to-date.
Temporary lexical analysis files
During parsing, SNiFF+ generates temporary lexical analysis files for each parsed source file. The files are called sourceFilename .lex and are used as input for the generation of the cross reference information. The lexical analysis files are removed when the cross reference information has been successfully generated and stored to disk.
Preprocessor cache files
If preprocessing is enabled, SNiFF+ creates preprocessor files for all preprocessed source files. This speeds up preprocessing, since header files are preprocessed only once and are then directly loaded from the cached file. The cache files are called sourceFilename .cpp . The preprocessor cache files are regenerated transparently whenever a source file is modified, reparsed and preprocessed again.
Cross reference files
Cross reference files are generated on demand when cross reference queries are executed. When a cross reference query for a particular project is executed for the first time, SNiFF+ processes the temporary lexical analysis files and generates cross reference tables for fast cross referencing. After the information has been successfully created, it is stored to disk in files called sourceFilename .ref and the temporary lexical analysis files are deleted. The next time a cross reference query is executed, the cross reference information is directly loaded from disk. The reference files are updated dynamically and transparently whenever files are modified and reparsed.
Cross reference indexes
To speed up referred-by queries, SNiFF+ generates a cross reference index for each project called project .index . This index allows the efficient and fast access of cross reference information for large projects. Cross reference information is stored in .ref files. The index is created the first time a comprehensive referred-by query is executed and is then stored to disk. The next time a referred-by query is executed, the index is used to decide what symbols and files need to be considered in order to answer the query. The index is updated dynamically and transparently whenever a file is modified and reparsed.
Configuration management cache
To speed up the access to the configuration management information of underlying configuration management tools, SNiFF+ uses configuration management cache files. The first time the Configuration Manager displays the configuration management information of a project, this information is extracted from the underlying configuration management tool. When the project is closed, the information is dumped to a file called project . VersionTool .cmi . The next time the Configuration Manager displays configuration information, it is loaded directly from this file. The cache is updated dynamically and transparently whenever the configuration information of a project changes.
Custom targets file
SNiFF+ stores the user-specific list of custom targets for making, execution and debugging in a file called project.user.customtargets . The file can be modified in the Target dialog. See also Target dialog.
Tool status file
When a root project is closed, SNiFF+ stores the window layout for each user in a file called project.user .state2 . Whenever a root project is reopened, SNiFF+ restores the window layout to the same state it had when the project was closed. The following information is stored in the tool status file:

- Window locations and sizes
- Window contents
- Active selections
- History menus

By default, the file is located in the .sniffdir directory of the project. You can specify another directory under Tool Status Files in the project attributes. See also Tool Status Files
Retriever index files
If the Create Index checkbox is selected in the Preferences Retriever view, a system of indexes (referred to as "the index" in the following) is created as soon as the first retrieve query is run.
This index serves to restrict text retrievals to only those files where there is high probability of matching a query, thus greatly reducing retrieval time in large projects.
The index is created for the files in the queried projects, and includes also files in projects physically outside the current Working Environment if these have been added as subprojects (e.g. libraries).
Thus, if you run a query over all projects in a given Working Environment (including associated external projects), a complete index of words and files is created.
Alternately, if you query only a subset of the projects, only this subset is indexed. Over time, and as you query different subsets, the index will be incrementally built up.
Index files are stored in the .RetrieverIndex/ directory in the Working Environment root. If absolute projects are queried outside of Working Environments, the index files are stored in the project root.
The index is made up of the following files:

RetrieverIndex.fii
A list of files that have been indexed.
- RetrieverIndex.wbi
A case-insensitive list of words in the indexed files.
The Retriever's Show Only Similar Words option provides a selective view to this list.
- RetrieverIndex0001S.idx
Word -- file mappings. There can be one or more of these files because the size of individual files is optimized for faster access. The Retriever's Preview File List option provides a selective view to this list by showing the files where a given word (case- insensitive and not filtered in any way) occurs.